首先,讓我們創建一個 Eloquent 模型。模型通常位於app目錄中,但您可以將它們隨意放置在可以根據您的文件自動加載的任何位置。所有 Eloquent 模型都擴展了類。composer.json
Illuminate\Database\Eloquent\Model
創建模型實例的最簡單方法是使用Artisan 命令:make:model
讓我們來創建一個Product modelphp artisan make:model Product
創建好之後打開
我們沒有告訴 Eloquent 為我們的Product模型使用哪個表。按照慣例,除非明確指定另一個名稱,否則將使用類的複數名稱“snake case”作為表名。因此,在這種情況下,Eloquent 將假設Product模型將記錄存儲在products表中。您可以通過table在模型上定義屬性來指定自定義表:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'my_products';
}
如下範例model有這些屬性可以使用
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasFactory;
protected $guarded = []; // 設定成只有product_id欄位不能被更改
protected $fillable = ['code', 'name', 'price', 'quantity']; // 只有這些欄位可以被大量新增
protected $hidden = ['updated_at']; // 隱藏欄位
protected $appends = ["current_price"]; // 自製屬性
public function getCurrentPriceAttribute() // 固定命名規則get...Attribute對應上面自製屬性
{
return $this->quantity * 10; // 執行程式 Product::find(1)->current_price,就會執行這段function
}
}
接著到ProductController.php
修改以下方法,使用ORM的方式做CRUD
<?php
namespace App\Http\Controllers;
use App\Models\Product;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class ProductController extends Controller
{
public function index()
{
return Product::all(); // 回傳product table 所有資料
}
public function create()
{
//
}
public function store(Request $request)
{
$newdata = $request->all();
$data = Product::create($newdata); // 新增表單回傳
return response($data);
}
public function show($id)
{
//
}
public function edit($id)
{
//
}
public function update(Request $request, $id)
{
$form = $request->all();
$items = Product::find($id); // 找到要修改資料
$items->fill(['quantity' => $form['quantity']]); // 修改
$items->save(); // 儲存
return response()->json(true); // 成功的話回傳true
}
public function destroy($id)
{
Product::find($id)->delete(); // 找到刪除資料刪除
return response()->json(true); // 刪除成功回傳true
}
}
都設定好後可以去postman測試看看哦,測試方法跟前一章節一樣。